from CONSTANTESUNITES import *
import time
import math
class Unite(object):
    def __init__(self,typeUnite,batiment): ##recoit en string le type d'unite et un tableau des coordonnees du batiments qui l'a cree
        self.x = batiment.parent.x
        self.y = batiment.parent.y
        self.z = batiment.parent.z
        self.deplacementX = 0
        self.deplacementY = 0
        self.deplacementZ = 0
        self.tempsTotal = 0
        self.nbTics = 0
        self.proprietaire=batiment.parent.proprietaire
        self.vitesse=CONSTANTESUNITES.unites[typeUnite]['vitesse']
        self.hp=CONSTANTESUNITES.unites[typeUnite]['hp']
        self.shields=CONSTANTESUNITES.unites[typeUnite]['shields']
        self.attaque=CONSTANTESUNITES.unites[typeUnite]['attaque']

#              
    def initMouvement(self,x,y,z):
        #calcul de la distance a parcourir et le temps necessaire pour TOUT le trajet
        distanceTotale=math.sqrt(math.pow((self.x-x),2)+math.pow((self.y-y),2)+math.pow((self.z-z),2))
        tempsTotal=(distanceTotale/self.vitesse)*10 ##en dixiemes de secondes
        
        self.tempsTotal=int(tempsTotal)
        
        ##calcule les ajustements de position par tic
        self.deplacementX = (x-self.x)/tempsTotal
        self.deplacementY = (y-self.y)/tempsTotal
        self.deplacementZ = (z-self.z)/tempsTotal
        ##sauve la destination
        self.destinationX=x
        self.destinationY=y
        self.destinationZ=z
        
    def bouger(self):
        ##ajuste la position
        self.x+=self.deplacementX
        self.y+=self.deplacementY
        self.z+=self.deplacementZ
        self.nbTics+=1
        if self.nbTics<=self.tempsTotal:
            ##indique que le deplacement n'est pas termine
            return "encore"
        else:
            ##indique que le deplacement est termine
            self.x=self.destinationX
            self.y=self.destinationY
            self.z=self.destinationZ
            return "fini"
        
        #NOTE!!!! : 1 pt de VITESSE = 1 x et y et z par SEC
        
        #envoyer au serveur la distance et le temps necessaire
        
        
        #while self.x|=x
        
        #appeler updatePositionClient au 0.1sec
        #appeler updatePositionServeur au 2sec
        
        
    
    
#    def updatePositionClient(self):
#        #calcul position selon le client
#        #grandeur du deplacement 
#        
#    def updatePositionServeur(self):   
#        #demander temps restant
#        deplacementRestantx=tempsRestant*self.vitesse
#        deplacementRestanty=tempsRestant*self.vitesse
#        deplacementRestantz=tempsRestant*self.vitesse
#        
#         
#            #soustraire a la destination le deplacement restant
#        self.x=x-deplacementRestantx
#        self.y=y-deplacementRestanty
#        self.z=z-deplacementRestantz
  

        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        